/**
 * 常用函数
*/
export default class MyTools {
    /**获取角度
     * @param start 起点位置
     * @param end 终点位置
     * @param direction 朝向 例：cc.v2(-1, 0)
    */
    public static getAngle(start: any, end: any, direction: cc.Vec2) {
        //计算出朝向
        let dx = end.x - start.x;
        let dy = end.y - start.y;
        let dir = cc.v2(dx, dy);

        //根据朝向计算出夹角弧度
        let angle = dir.signAngle(direction);

        //将弧度转换为欧拉角
        let degree = angle / Math.PI * 180;

        return -degree
    }
    /**获取两点长度
    * @param start 起点位置
    * @param end 终点位置
    */
    public static getlong(start: any, end: any) {
        let temp = start.sub(end);
        let dis = Math.abs(temp.mag());
        return dis;
    }
    /**
     * 获取随机坐标--偏移是将以左下角为原点的坐标转为中间为原点的坐标
     * @param x X坐标的随机范围(0-1080)
     * @param y Y坐标的随机范围(0-1920)
     * @param deviationX X偏移距离(0-540)
     * @param deviationY Y偏移距离(0-960)
    */
    public static getRandomPos(x: number, y: number, deviationX: number, deviationY: number) {
        let i = Math.floor(Math.random() * (x + 1)) - deviationX;
        let j = Math.floor(Math.random() * (y + 1)) - deviationY;
        let pos = cc.v3(i, j, 0);
        return pos;
    }
    /**
     * @param min 最小值
     * @param max 最大值
    */
    public static random(min, max) {
        if (min > max) [min, max] = [max, min];

        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /**
     * @param key 所需图片名字
     * @param atlas 图集数组
    */
    public static getSprite(key: string, atlas: cc.SpriteAtlas[]) {
        for (let i = 0, len = atlas.length; i < len; i++) {
            let sf = atlas[i].getSpriteFrame(key);
            if (sf) return sf;
        }
        console.log("图片:" + key + "没找到");
        return null;
    }
    /**
     * 获取对象节点相对目标节点下的坐标
     * @param obj 对象节点
     * @param target 目标节点
    */
     public static getRelativePos(obj: cc.Node, target: cc.Node) {
        let temp = obj.parent.convertToWorldSpaceAR(obj.position);
        let pos = target.convertToNodeSpaceAR(temp);
        return pos;
    }
}
